package com.demo.study.data_structure.recursion;

import lombok.Builder;

/**
 * 递归
 *
 * @author Baymax
 * @since 2023/2/1
 */
public class Client {
    public static void main(String[] args) {
        SeatNo.builder().build().call();
        StepCount.builder().build().call();
    }

    /**
     * 计算当前座位号
     */
    @Builder
    static class SeatNo {
        void call() {
            int beforeNum = 5;
            System.out.println("我当前座位号是：" + (f(beforeNum) + 1));
        }

        // 计算前面一个人的座位号
        private int f(int n) {
            if (n == 1) {
                return 1;
            }
            return f(n - 1) + 1;
        }
    }

    /**
     * 每次只上一级或者两级台阶，共有多少种走法
     */
    @Builder
    static class StepCount {
        void call() {
            int stepNum = 6;
            System.out.println("走完" + stepNum + "级台阶的总的走法：" + f(stepNum));
        }

        // 获取前一个人的座位号
        private int f(int n) {
            if (n == 1) {
                return 1;
            }
            if (n == 2) {
                return 2;
            }
            return f(n - 1) + f(n - 2);
        }
    }

}
